Step 1: DC-DC single leg with current control

dcdc_single_leg_current_control

The controller is designed here with a compensation of the output voltage.

current_control_with_voltage_compensation

Closed loop transfer function : $$ TF_{CL}(p) = \dfrac{1 + \frac{K_p}{K_i} p}{1 + \frac{K_p}{K_i} p + \frac{L}{E ~ K_i} p^2 } $$

Which leads to: $$ K_i = \dfrac{L \omega_n^2}{E} ~~~~ \text{et} ~~~~ K_p = \dfrac{2 \xi K_i}{\omega_n} $$

Step 1.a) compute $K_p$ and $K_i$ coefficients with $\xi = 0.707$

Parameter $\omega_n$ is chosen to get the same dynamic in closed loop as in open-loop with a nominal load (as this dynamic is high enough for this application) and the damping factor is limited to 0.707.

Le's check the closed loop transfer function with these coefficients:

The overshoot of the step response can not be acceptable as it is around 20%. This is due to zero of the numerator of the transfer function which is probably too close to the real part of a denominator pole. Let's check this with the pzmap function of the control toolbox:

It confirms that thes $K_p$ and $K_i$ values lead to a zero in the transfer function which is too close to the poles. Different solutions can be considered to solve this issue. For example:

Let's try the first solution and perform a sweep of the damping coefficient $\xi$ to evaluate its influence on the overshoot and on the pole / zero map.

Step 1.b) Sweep of the damping coefficient $\xi$

With the step_response function of the control package.

The $K_p$ and $K_i$ values obtained for a damping coefficient $\xi = 1.4$ seem to provide a good compromise between overshoot and speed. Let's check this with some simba simulations for the different values of $\xi$.

With Simba simulations

Step 1.c) Discrete Z-controller : continuous to discrete transformation using Tustin method

The continuous to discrete transformation using Tustin method gives: $ p = \dfrac{2}{T_s} \dfrac{z-1}{z+1} $,

which leads to $ C(z) = \dfrac{1}{1-z^{-1}} \left(K_p + \frac{1}{2} K_i T_s + (- K_p + \frac{1}{2} K_i T_s) ~ z^{-1}\right) $

and then to the recurrence equation: $$ \alpha(k) = \alpha(k-1) + \left(K_p + \frac{1}{2} K_i T_s \right) \epsilon(k) + \left(-K_p + \frac{1}{2} K_i T_s \right) \epsilon(k-1) $$

And finally: $ a_0 = -K_p + \frac{1}{2} K_i T_s $ and $ a_1 = K_p + \frac{1}{2} K_i T_s $

Step 1.d) Simba Simulation: continuous and discrete controller

Step 2: Direct Current Power Flow Control

direct_current_power_flow_control